package com.coderising.jvm.engine;

import java.util.HashMap;
import java.util.Map;

public class JavaObject {
	public static final int OBJECT = 1;
	public static final int STRING = 2;
	public static final int INT = 3;
	public static final int FLOAT = 4;

	int type;
	private String className;

	private Map<String, JavaObject> fieldValues = new HashMap<String, JavaObject>();

	private String stringValue;

	private int intValue;

	private float floatValue;

	public void setFieldValue(String fieldName, JavaObject fieldValue) {
		fieldValues.put(fieldName, fieldValue);
	}

	public JavaObject(int type) {
		this.type = type;
	}

	public void setClassName(String className) {
		this.className = className;
	}

	public void setStringValue(String value) {
		stringValue = value;
	}

	public String getStringValue() {
		return this.stringValue;
	}

	public void setIntValue(int value) {
		this.intValue = value;
	}

	public int getIntValue() {
		return this.intValue;
	}

	public int getType() {
		return type;
	}

	public JavaObject getFieldValue(String fieldName) {
		return this.fieldValues.get(fieldName);
	}

	public String toString() {
		switch (this.getType()) {
		case INT:
			return String.valueOf(this.intValue);
		case STRING:
			return this.stringValue;
		case OBJECT:
			return this.className + ":" + this.fieldValues;
		case FLOAT:
			return String.valueOf(this.floatValue);
		default:
			return null;
		}
	}

	public String getClassName() {
		return this.className;
	}

	public void setFloatValue(float value) {
		this.floatValue = value;
	}

}
